const {resolve} = require('path')

module.exports = {
    // 打包模式 production 生产环境 | development 开发环境 | none 无预置配置
    mode: 'production',
    // 入口文件
    // 一对一
    entry: './index.js',
    // 输出
    output: {
        // 输出目录
        path: resolve(__dirname, './build'),// /USR/XXX/webp/..
        // 打包文件名
        // filename: 'index.js'
        // 占位符
        filename: '[name].js'
    },
    // 处理loader目录
    resolveLoader: {
        modules: ['node_modules', resolve(__dirname, 'loaders')],
    },
    // 当编译模块时 如果遇到不能解析的模块 如txt文件 会找到这个属性下面的rules 去查找对应的解析规则
    module: {
        rules: [
            {
                // 对于文件的一个匹配规则
                test: /\.txt$/,
                use: 'raw-loader'
            },
            {
                test: /\.(gif|png|jpe?g)/,
                use: {
                    // url-loader 多limit属性 判断文件小于该值 转换成base64
                    loader: 'file-loader',
                    options: {
                        name: '[name]_[contenthash].[ext]',
                        // 打包后文件所在位置 目录相对于打包文件夹
                        outputPath: './images',
                        // 打包后文件url 相对于当前配置文件
                        publicPath: './build/images'
                    }
                }
            },
            {
                test: /\.css$/,
                // use的顺序是 右 -> 左 下 -> 上
                use: [
                    "style-loader",
                    {
                        loader: 'css-loader',
                        options: {
                            // 是否处理url()
                            url: true,
                            // 是否处理@import
                            import: true,
                            // 是否生成对应sourcemap文件
                            sourceMap: false
                        }
                    }
                ]
            },
            {
                test: /\.docx$/,
                loader: 'doc-loader'
            }
        ]
    }
}